// 02-04-sanitizeNames.js:  使用flowRight写一个sanitizeNames()函数，返回一个下划线连接的小写字符串，把数组中的name转换为这种形式：
//例如sanitizeNames(["Hellow Word"])=>["hello_word"]

const fp = require('lodash/fp');

/**
 * 思路：
 * 1.先把传进来的字符串全部转为小写
 * 2.替换空格为_(下划线)(a:使用split和join方法来用下划线替换空格,b:使用正则方法来用下划线替换空格)
 * 3.使用fp.flowRight()函数，组合处理
 */

// 方法一：
// let sanitizeNames_1 = (vals) => {

//     let to_lower = fp.toLower(vals);
//     let lower_str = fp.split(' ', to_lower).join('_');//a:使用split和join方法来用下划线替换空格
//     // let lower_str = fp.replace(/\s+/g, '_', to_lower);//b:使用正则方法来用下划线替换空格

//     console.log('lower_str', lower_str);

// }
// sanitizeNames_1(['Hello Word']);

//方法二：优化版
let fn_replace = fp.replace(/\s+/g, '_');

//在处理的过程中不需要指明要处理的数据，在调用此方法时传入即可
let sanitizeNames_2 = fp.flowRight(fn_replace, fp.toLower);
console.log(sanitizeNames_2('Hello Word'));
